package com.bjpowernode.result;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Builder    //生成构建起模式的代码，就相当于平常见到源码或其它第三方类中的builder(),build()一样
@NoArgsConstructor  //因为底层对象在转json序列化时是需要无参构造器来反射这个类，所以需要无参构造
@AllArgsConstructor//但是只加Builder和NoArgsConstructor时会报错，所以还要把这个加上
@Data
public class R {
    //响应状态码
    private int code;

    //响应信息
    private String msg;

    //响应数据
    private Object info;

    public static R ok(){
        return R.builder().code(200).msg("成功").info(null).build();
    }

    public static R ok(String msg){
        //下面的这些builder(),build(),code()这些方法就是由@Builder生成的
        return R.builder().code(200).msg(msg).info(null).build();
    }

    public static R ok(Object info){
        //下面的这些builder(),build(),code()这些方法就是由@Builder生成的
        return R.builder().code(200).msg("成功").info(info).build();
    }

    public static R ok(String msg,Object info){
        //下面的这些builder(),build(),code()这些方法就是由@Builder生成的
        return R.builder().code(200).msg(msg).info(info).build();
    }

    public static R fail(){
        return R.builder().code(500).msg("失败").info(null).build();
    }

    public static R fail(String msg){
        return R.builder().code(500).msg(msg).info(null).build();
    }

    public static R fail(int code,String msg){
        return R.builder().code(code).msg(msg).info(null).build();
    }
}
